package com.yuw.collectiontool;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class TestDriver {
    public static void main(String[] args) {
        System.out.println("------------------------------------------");
        test01();
        System.out.println("------------------------------------------");
        test02();
        System.out.println("------------------------------------------");
        test03();
    }

    /**
     * Collections工具类和Comparator和Comparable接口的使用
     */
    public static void test03() {
        // 集合进行排序
        List<Teacher> list = new ArrayList<>();
        // 存入元素
        list.add(new Teacher("zhangsan", "10010",60));
        list.add(new Teacher("lisi", "10011",80));
        list.add(new Teacher("wangwu", "10012",50));
        list.add(new Teacher("zhaoliu", "10013",90));
        System.out.println("排序之前List中的元素：");
        printTeaList(list);
        // 将list中的元素按照自然顺序进行排序（字典顺序）
        Collections.sort(list, new Comparator<Teacher>() {
            @Override
            public int compare(Teacher o1, Teacher o2) {
                // 设置返回flag 默认值是0，相等；当然，默认值可以根据业务来定，不是一定要初始化为0
                int flag = 0;
                // 通过成绩高低确定排序标准
                if (o1 != null && o2 != null) {
                    // 大于
                    if (o1.getTeaScore() > o2.getTeaScore()) {
                        flag = 1;
                    }
                    // 小于
                    if (o1.getTeaScore() < o2.getTeaScore()) {
                        flag = -1;
                    }
                }
                return flag;
            }
        });
        System.out.println("排序之后List中的元素：");
        printTeaList(list);

    }
    /**
     * 打印List集合中的元素
     *
     * @param list
     */
    public static void printTeaList(List<Teacher> list) {
        for (Teacher str : list) {
            System.out.println("   " + str);
        }
        // 换行
        System.out.println();
    }

    /**
     * Collections工具类和Comparator和Comparable接口的使用
     */
    public static void test02() {
        // 集合进行排序
        List<Student> list = new ArrayList<>();
        // 存入元素
        list.add(new Student("zhangsan", "10010",60));
        list.add(new Student("lisi", "10011",80));
        list.add(new Student("wangwu", "10012",50));
        list.add(new Student("zhaoliu", "10013",90));
        System.out.println("排序之前List中的元素：");
        printStuList(list);
        // 将list中的元素按照自然顺序进行排序（字典顺序）
        Collections.sort(list);
        System.out.println("排序之后List中的元素：");
        printStuList(list);

    }

    /**
     * 打印List集合中的元素
     *
     * @param list
     */
    public static void printStuList(List<Student> list) {
        for (Student str : list) {
            System.out.println("   " + str);
        }
        // 换行
        System.out.println();
    }


    /**
     * Collections工具类和Comparator和Comparable接口的使用
     */
    public static void test01() {
        // 集合进行排序
        List<String> list = new ArrayList<>();
        // 存入元素
        list.add("zhangsan");
        list.add("lisi");
        list.add("wangwu");
        list.add("zhaoliu");
        System.out.println("排序之前List中的元素：");
        printList(list);
        // 将list中的元素按照自然顺序进行排序（字典顺序）
        Collections.sort(list);
        System.out.println("排序之后List中的元素：");
        printList(list);

    }

    /**
     * 打印List集合中的元素
     *
     * @param list
     */
    public static void printList(List<String> list) {
        for (String str : list) {
            System.out.print("   " + str);
        }
        // 换行
        System.out.println();
    }
}
